package com.hnqcgczy.service.impl;

import com.hnqcgczy.dao.IUserDao;
import com.hnqcgczy.dao.imp.UserDaoImpl;
import com.hnqcgczy.db.MyTransaction;
import com.hnqcgczy.service.IUserService;
import com.hnqcgczy.vo.TUser;

import java.sql.SQLException;

public class UserServiceImpl implements IUserService {
    @Override
    public boolean reg(String uname, String pwd) throws SQLException {
        //数据库打开连接，设置事务提交方式
        MyTransaction myTransaction=new MyTransaction(true);
        //调用数据层方法， 准备提交用户数据
        IUserDao userdao=new UserDaoImpl(myTransaction);
        //设置返回结果
        boolean isSave=false;
        //检测用户名是否已经存在
        boolean isUser=userdao.getUserByTuId(uname);
        //如果用户不存在，可用正常实例化TUser执行新增
        if(!isUser){
            TUser user=new TUser();
            user.setTuId(uname);
            user.setTuPassword(pwd);
            isSave=userdao.reg(user);
        }
        return isSave;
    }

    @Override
    public boolean getUserByTuId(String tuId) throws SQLException {
        //打开数据库连接
        MyTransaction myTransaction=new MyTransaction(false);
        //实例化 数据层对象
        IUserDao dao=new UserDaoImpl(myTransaction);
        //调用数据层方法 并返回
        return dao.getUserByTuId(tuId);
    }

    @Override
    public boolean login(String id, String password) throws SQLException {
        // 打开数据库连接
        MyTransaction myTransaction=new MyTransaction(false);
        //实例化 数据层对象
        IUserDao dao=new UserDaoImpl(myTransaction);
        //调用数据层登陆方法
        boolean islogin=dao.login(id,password);
        //返回登陆结果
        return islogin;
    }

    public static void main(String[] args) {
//        IUserService uss=new UserServiceImpl();
//        try {
//            uss.reg("wangwu","123456");
//        } catch (SQLException throwables) {
//            throwables.printStackTrace();
//        }

        //测试登陆方法
        IUserService uss=new UserServiceImpl();
        try {
            boolean islogin=  uss.login("wangwu","123456xx");
            System.out.println(islogin);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}
